//项目的入口文件
//http1--加载http模块
var http=require("http");
var fs=require("fs");
var path=require("path");
var mime=require("mime");
var url=require("url");
var _=require("underscore");
var querystring=require("querystring")
//http2--创建服务
http.createServer(function(req,res){
    
    req.url=req.url.toLowerCase();
    req.method=req.method.toLowerCase();
    var urlObj=url.parse(req.url,true)
    
    res.render=function(filepath,dataSend){
        fs.readFile(filepath,function(err,data){
            if(err){
                throw err;
            }
            if(dataSend){
                var fn=_.template(data.toString("utf8"));
                data=fn(dataSend)

            }
              //此处必须设置响应报文头,此处需要使用mime包
            res.setHeader("Content-Type",mime.getType(req.url))
            res.end(data);
        })
    }
    if(req.url==="/"||req.url==="/index"&&req.method==="get"){
         //xian把数据读取出来
         fs.readFile(path.join(__dirname,'data','data.json'),'utf-8',function(err,data){
            if (err && err.code!=='ENOENT') {
                throw err;
              }  
              var list=JSON.parse(data || '[]') 
              res.render(path.join(__dirname,"views","index.html"),{list:list})
            })
        //读取index.html并返回
        
    }else if(urlObj.pathname==="/item"&&req.method==="get"){
        fs.readFile(path.join(__dirname,'data','data.json'),'utf-8',function(err,data){
            if (err && err.code!=='ENOENT') {
                throw err;
              }  
              var item=JSON.parse(data || '[]') 
              var newInfo=null; 
              //urlObj.queiry.id
              for(var i=0;i<item.length;i++){
                  if(item[i].id.toString()===urlObj.query.id){
                    //urlObj.queiry.id拿到的数据是字符串类型
                    //item[i].id拿到的数据是数字类型
                    newInfo=item[i];
                    break;

                  }
              }
              if(newInfo){
                res.render(path.join(__dirname,"views","details.html"),{item:newInfo})
              }
             
            })

        

    }else if(req.url==="/submit-get"&&req.method==="get"){
        //读取submit.html并返回
   
        res.render(path.join(__dirname,"views","submit-get.html"))
    }
    else if(req.url==="/submit-post"&&req.method==="get"){

        //读取submit.html并返回
   
        res.render(path.join(__dirname,"views","submit-post.html"))
    }
    else if(req.url.startsWith("/resources")&&req.method==="get"){
       
        res.render(path.join(__dirname,req.url))
    }
    else if (req.url.startsWith('/add') && req.method === 'get') {  
        //xian把数据读取出来
       
           
      
    
        
      }else if(req.url==="/add"&&req.method==="post"){
            //使用post方法提交
            fs.readFile(path.join(__dirname,'data','data.json'),'utf-8',function(err,data){
                if (err && err.code!=='ENOENT') {
                    throw err;
                  }  
                  var list=JSON.parse(data || '[]')  
                console.log(list)
                  var array=[];
                  req.on("data",function(chunk){
                      array.push(chunk);
                  })
                  req.on("end",function(){
                      var postBody=Buffer.concat(array);
                    
                      postBody=postBody.toString("utf8");
                      
                     postBody=querystring.parse(postBody)
                    
                      list.push(postBody);
                      console.log(list)
                  })
                  
                  
                  fs.writeFile(path.join(__dirname, 'data', 'data.json'), JSON.stringify(list), function (err) {
                    if (err) {
                      throw err;
                    }  
                    
                    console.log(list)
                    // 设置响应报文头，通过响应报文头告诉浏览器，执行一次页面跳转操作
                    // 跳转到新闻列表页
                    // 重定向
          
                    res.statusCode = 302;
                    res.statusMessage = 'Found';
                    res.setHeader('Location', '/');    
                    res.end();
                  });


                })
           

    }else{
        res.writeHead(404,"not found",{
            "Content-Type":"text/html;charset=utf-8"
        })
    }

}).listen(8089,function(){
    console.log("ok!")
})
